package ar.com.indra.dao.impl;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.springframework.jdbc.core.support.JdbcDaoSupport;

import ar.com.indra.beans.DetalleFormularioDTO;
import ar.com.indra.dao.DetalleFormularioDAO;


public class DetalleFormularioDaoImpl extends JdbcDaoSupport implements DetalleFormularioDAO{


	@Override
	public  List<DetalleFormularioDTO> findDetalleFormulario(int id_usuario,int id_encuesta, int id_formulario) {
		
		List<DetalleFormularioDTO> listaDetalleFormulario= new ArrayList<DetalleFormularioDTO>();
		
		System.out.println("Parametros");
		System.out.println("id_usuario: " + id_usuario + "  id_encuesta: "+id_encuesta);
		
		String sql = 	"select  pf.ID_TITULO, " +
						"        t.TITULO, " +
						"        pf.ID_FORMULARIO, " +
						"        pf.ID_AREA, " +
						"        pf.ID_PREGUNTA_ENCUESTA, " +
						"        pf.ID_TIPO_PREGUNTAS, " +
						"        s.ID_SERVICIO, " +
						"        s.SERVICIO, " +
						"        pf.ID_PREGUNTA, " +
						"        p.PREGUNTA, " +
						"        r.POSICION_RTA, " +
						"        r.COMENTARIO, " +
						"        pf.ID_GRUPO_ETIQUETA, " +
						"        ROWCONCAT " +
						"        ( " +
						"           concat " +
						"           ( " +
						"              'SELECT ETIQUETA FROM SESC_ETIQUETAS where ID_GRUPO_ETIQUETA=', " +
						"              pf.ID_GRUPO_ETIQUETA " +
						"           ) " +
						"        ) " +
						"        ETIQUETAS_CONCATENADAS " +
						"        from SESC_PREGUNTAS_FORMULARIOS pf, " +
						"        SESC_SERVICIOS s, " +
						"        SESC_PREGUNTAS p, " +
						"        SESC_TITULOS t, " +
						"        SESC_RESPUESTAS r " +
						"        RIGHT OUTER JOIN " +
						"        SESC_PREGUNTAS_FORMULARIOS pf2 on " +
						"        ( " +
						"           r.ID_PREGUNTA_ENCUESTA=pf2.ID_PREGUNTA_ENCUESTA " +
						"           and r.ID_ENCUESTA = ? " +
						"           and r.ID_USUARIO = ? " +
						"        ) " +
						"        where pf.ID_PREGUNTA_ENCUESTA=pf2.ID_PREGUNTA_ENCUESTA " +
						"        and pf.ID_FORMULARIO = ? " +
						"        and pf.ID_PREGUNTA=p.ID_PREGUNTA " +
						"        and pf.ID_SERVICIO=s.ID_SERVICIO " +
						"        and p.ID_SERVICIO=pf.ID_SERVICIO " +
						"        and s.ID_SERVICIO=p.ID_SERVICIO " +
						"        and pf.ID_TITULO =t.ID_TITULO " +
						"        order by pf.ID_PREGUNTA ";
				
		Object[] parameters =  new Object[] {new Integer( id_encuesta),new Integer( id_usuario), new Integer(id_formulario)};
		List<Map> rows =  getJdbcTemplate().queryForList(sql,parameters);

		for (Map row : rows) {
			DetalleFormularioDTO detalleFormulario = new DetalleFormularioDTO();
			
			if(row.get("ID_TITULO")!= null){
				detalleFormulario.setId_titulo(new Integer(row.get("ID_TITULO").toString()));
			}else{
				detalleFormulario.setId_titulo(new Integer(0));
			}
			detalleFormulario.setTitulo((String)row.get("TITULO"));
			if(row.get("ID_FORMULARIO")!= null){
				detalleFormulario.setId_formulario(new Integer(row.get("ID_FORMULARIO").toString()));
			}else{
				detalleFormulario.setId_formulario(new Integer(0));
			}
			if(row.get("ID_AREA")!= null){
				detalleFormulario.setId_area(new Integer(row.get("ID_AREA").toString()));
			}else{
				detalleFormulario.setId_area(new Integer(0));
			}
			if(row.get("ID_PREGUNTA_ENCUESTA")!= null){
				detalleFormulario.setId_pregunta_encuesta(new Integer(row.get("ID_PREGUNTA_ENCUESTA").toString()));
			}else{
				detalleFormulario.setId_pregunta_encuesta(new Integer(0));
			}
			if(row.get("ID_TIPO_PREGUNTAS")!= null){
				detalleFormulario.setId_tipo_pregunta(new Integer(row.get("ID_TIPO_PREGUNTAS").toString()));
			}else{
				detalleFormulario.setId_tipo_pregunta(new Integer(0));
			}
			if(row.get("ID_SERVICIO")!= null){
				detalleFormulario.setId_servicio(new Integer(row.get("ID_SERVICIO").toString()));
			}else{
				detalleFormulario.setId_servicio(new Integer(0));
			}
			detalleFormulario.setServicio((String) row.get("SERVICIO"));
			if(row.get("ID_PREGUNTA")!= null){
				detalleFormulario.setId_pregunta(new Integer(row.get("ID_PREGUNTA").toString()));
			}else{
				detalleFormulario.setId_pregunta(new Integer(0));
			}
			detalleFormulario.setPregunta((String) row.get("PREGUNTA"));
			if(row.get("POSICION_RTA")!= null){
				detalleFormulario.setPosicion_rta(new Integer(row.get("POSICION_RTA").toString()));
			}else{
				detalleFormulario.setPosicion_rta(new Integer(0));
			}
			
			detalleFormulario.setComentario((String) row.get("COMENTARIO"));
			if(row.get("ID_GRUPO_ETIQUETA")!= null){
				detalleFormulario.setId_grupo_etiquetas(new Integer(row.get("ID_GRUPO_ETIQUETA").toString()));
			}else{
				detalleFormulario.setId_grupo_etiquetas(new Integer(0));
			}
			detalleFormulario.setEtiquetas_concatenadas((String) row.get("ETIQUETAS_CONCATENADAS"));		
			
			listaDetalleFormulario.add(detalleFormulario);
		}
		
		
		return listaDetalleFormulario;
	}

}
